/*
 * 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package estsapp.utiles.filtrosTexto;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.TextEvent;
import javax.swing.JTextField;

/**
 *
 * @author diego
 */
public class AgregarFiltroTextField {

    public static void filtroNumeroDecimal(final JTextField textfield, final int cantidadDecimales) {

        textfield.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent evt) {
                boolean hayPunto = false;
                if (textfield.getText().contains(".")) {
                    hayPunto = true;
                }

                if (hayPunto && textfield.getText().split("\\.").length == 2) {
                    if (textfield.getText().split("\\.")[1].length() == cantidadDecimales) {
                        evt.consume();
                    }
                }

                int k = (int) evt.getKeyChar();
                //Este if no permite el ingreso de letras y otros símbolos
                if ((k >= 32 && k <= 45) || (k >= 58 && k <= 126)) {
                    evt.setKeyChar((char) KeyEvent.VK_CLEAR);
                    evt.consume();
                }
                if (k == 46) {//Este if me pregunta que si lo ingresado es un punto
                    if (textfield.getText().length() == 0) {//No hay texto ingresado
                        textfield.setText("0");//antepone un cero
                    } else if (hayPunto) {
                        evt.consume();//Si no es el primer cero, no lo permite
                    }
                } else if (k == 44) {//Si se ingresa una coma
                    String texto = textfield.getText();
                    if (hayPunto) {
                        evt.consume();
                    } else if (textfield.getText().length() == 0) {// no hay texto ingresado
                        textfield.setText("0.");//antepone un cero
                    } else {
                        texto += ".";
                        textfield.setText(texto);
                        evt.consume();
                    }
                }
                //Esteif no permite el ingreso de "ñ" ," Ñ" ni "/"
                if (k == 241 || k == 209 || k == 47) {
                    evt.setKeyChar((char) KeyEvent.VK_CLEAR);
                    evt.consume();
                }
            }

            @Override
            public void keyPressed(KeyEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }

            @Override
            public void keyReleased(KeyEvent e) {
                //throw new UnsupportedOperationException("Not supported yet.");
            }
        });
    }
}
